#include <iostream>
using namespace std;

//C++重载实现
//编译器角度
//重置符号
//calcPay
//calcPay_int_double_double

//函数原型
//calcPay_int_double
//calcPay_int_double_double
void calcPay(int empNum, double payRate, double hours = 40.0);
//函数calcPay的定义
void calcPay(int empNum, double payRate, double hours)
{
    double wages;
    wages = payRate * hours;
    cout << "Gross pay for employee number ";
    cout << empNum << " is " << wages << endl;
}

void calcPay(int empNum)
{
    double wages;
    cout << "Gross pay for employee number ";
    cout << empNum << " is " << wages << endl;
}

//void calcPay(int empNum,double demo)
//{
//    double wages;
//    cout << "---------- " << demo << "-----";
//    cout << empNum << "----- is " << wages << endl;
//}


//1. 默认实参的值必须是常数值或命名常量。
//2. 当在函数调用中遗漏了一个实参时(因为它有默认值)，它后面的所有实参也必须 被省略。
//3. 当函数使用了带默认实参和不带默认实参这两种混合的形参时，带默认实参的形参必须最后声明。

//非法原型
//void calcPay(int empNum, double hours = 40.0, double payRate);
//非法原型
//void calcPay(double hours = 40.0, int empNum, double payRate);

int main(){
    //使函数的某些形参有默认实参，而某些形参则没有，这是可能的。
    // 例如，在下面函数中，只有最 后一个形参具有默认实参
    calcPay (769, 15.75);  // 使用 hours 的默认实参
    calcPay (142, 12.00, 20); //指定 hours 数字
    return 0;
}